package com.sun.jdk.date.jdk8after;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;

public class WorkUsage {

    // 把日期时间对象转换成自定义格式的字符串形式(这个过程叫做日期格式化)
    private static void test1(){
        // 有一个LocalDateTime对象
        LocalDateTime now = LocalDateTime.now();

        /////////////////////////////第一种方式//////////////////////////////////
        // 想把这个LocalDateTime对象转换成 yyyy-MM-dd HH:mm:ss的格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formatLocalDateTime = dateTimeFormatter.format(now);
        System.out.println("formatLocalDateTime = " + formatLocalDateTime);

        // 想把这个LocalDateTime对象转换成 yyyy年MM月dd HH点mm分ss秒的格式
        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH点mm分ss秒");
        String formatLocalDateTime1 = dateTimeFormatter1.format(now);
        System.out.println("formatLocalDateTime1 = " + formatLocalDateTime1);

        /////////////////////////////第二种方式//////////////////////////////////
        // jdk本身也给我们提供了一些预定义的字符串表示方法
        String isoDateTime = now.format(DateTimeFormatter.ISO_DATE_TIME);
        System.out.println("isoDateTime = " + isoDateTime);

        /////////////////////////////第三种方式(和第一种一样)//////////////////////////////////
        // 也可以这样转换
        String myIsoDate = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH点mm分ss秒"));
        System.out.println("myIsoDate = " + myIsoDate);

        /////////////////////////////第四种方式//////////////////////////////////
        String format1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).format(LocalDateTime.now());
        System.out.println("format1 = " + format1);
        String format1_1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).format(LocalDateTime.now());
        System.out.println("format1_1 = " + format1_1);
        String format1_2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(LocalDateTime.now());
        System.out.println("format1_2 = " + format1_2);
        String format1_3 = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).format(LocalDateTime.now());
        System.out.println("format1_3 = " + format1_3);

        String format2 = DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG).format(LocalDateTime.now());
        System.out.println("format2 = " + format2);

        String format3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).format(LocalDateTime.now());
        System.out.println("format3 = " + format3);
    }

    // 把字符串形式的日期时间转换成对象表示的日期时间(这个过程叫解析)
    private static void test2() {

        // 字符串类型的时间
        String strDate = "2022-07-24 13:58:09";
        // 针对特定字符串类型的时间格式器
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parseDate = LocalDateTime.parse(strDate, dateTimeFormatter);
        System.out.println("parseDate = " + parseDate);

        String strDate1 = "2022年07月24日 13点58分09秒";
        LocalDateTime parseDate1 = LocalDateTime.parse(strDate1, DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH点mm分ss秒"));
        System.out.println("parseDate1 = " + parseDate1);
    }

    public static void main(String[] args) {
        test1();
        System.out.println("-------");
        test2();
        System.out.println("-------");
    }
}
